package com.wulis.provider.basic.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wulis.common.support.BaseService;
import com.wulis.provider.basic.model.dto.InsertUserDto;
import com.wulis.provider.basic.model.dto.QueryUserPageDto;
import com.wulis.provider.basic.model.dto.UpdateUserDto;
import com.wulis.provider.basic.model.entity.UserInfo;
import com.wulis.provider.basic.model.vo.QueryUserListVo;
import com.wulis.provider.basic.model.vo.QueryUserPageVo;
import com.wulis.provider.basic.model.vo.QueryUserVo;

import lombok.NonNull;

import java.util.List;

/**
 * 基础信息管理：用户表 Service
 *
 * @author WuliBao
 * @date 2020-05-21
 */
public interface UserInfoService extends BaseService<UserInfo> {
    /**
     * WEB:查询用户列表(分页)
     *
     * @param queryUserPageDto queryUserPageDto
     * @return IPage
     */
    IPage<QueryUserPageVo> queryUserPage(@NonNull QueryUserPageDto queryUserPageDto);
    
    /**
     * WEB:查询用户列表(根据部门ID)
     *
     * @param departmentId departmentId
     * @return List
     */
    List<QueryUserListVo> queryUserList(@NonNull Long departmentId);
    
    /**
     * WEB:查询用户
     *
     * @param id id
     * @return QueryUserVo
     */
    QueryUserVo queryUser(@NonNull Long id);
    
    /**
     * WEB:新增用户
     *
     * @param insertUserDto insertUserDto
     * @return Integer
     */
    Integer insertUser(@NonNull InsertUserDto insertUserDto);
    
    /**
     * WEB:修改用户
     *
     * @param updateUserDto updateUserDto
     * @return Integer
     */
    Integer updateUser(@NonNull UpdateUserDto updateUserDto);
    
    /**
     * WEB:删除用户
     *
     * @param userId userId
     * @return Integer
     */
    Integer deleteUser(@NonNull Long userId);
}
